
unit MainFrm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, 
  Controls, Forms, Dialogs, StdCtrls;

type

  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

(* Phan nay ban chen vao t unit Software  
    ----------------------------------------------------------------------------*)
const
   Class_Software: TGUID =
         '{1DC23069-5BA9-11CF-9D30-AB4141FC3200}';
type
   ICalculator=interface
   ['{62F3551C-5A88-11CF-9D30-8CA32AF8B605}']

      Function Add(X,Y:integer):integer; stdcall;
      Function Subtract(X,Y:integer):integer; stdcall;
   end;

   IWordEditor=interface

   ['{62F3551D-5A88-11CF-9D30-8CA32AF8B605}']
      Function UpperString(s:WideString):WideString;
                                                                                     stdcall;
   end;

(*   ---------------------------------------------------------------------------- *)

var
  Form1: TForm1;

implementation
uses ComObj;

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
   X:ICalculator;
   Y:IWordEditor;

begin
  X:=CreateComObject(Class_Software) as  ICalculator;
  Y:=CreateComObject(Class_Software) as  IWordEditor;
  ShowMessage(IntToStr(X.Add(11,2)));
  ShowMessage(Y.UpperString('This is COM Software'));

end;

end.
